package com.cindata.dimension

import com.cindata.dic.DictoryTypeDict

class CustomDimension
{

    DictoryTypeDict dictoryType
    // 字典类型
    String label
    // 名称
    BigDecimal minValue
    // 最小值
    String minOperator
    // 最小值操作符
    BigDecimal maxValue
    // 最大值
    String maxOperator
    // 最大值操作符
    Integer orderNumber
    // 排序
    String code
    // 唯一代码
    String define
    // 定义
    String color
    //颜色
    CustomDimension parent
    // 父维度

    static constraints = {
        dictoryType maxSize: 30, nullable: true, blank: true, comment: '字典类型'
        label maxSize: 50, comment: '名称'
        minValue precision: 15, scale: 4, nullable: true, blank: true, comment: '最小值'
        minOperator maxSize: 5, nullable: true, blank: true, comment: '最小值操作符'
        maxValue precision: 15, scale: 4, nullable: true, blank: true, comment: '最大值'
        maxOperator maxSize: 5, nullable: true, blank: true, comment: '最大值操作符'
        orderNumber maxSize: 5, nullable: true, blank: true, comment: '排序'
        code maxSize: 50, nullable: true, blank: true, comment: '唯一代码'
        define maxSize: 50, nullable: true, blank: true, comment: '定义'
        color maxSize: 10, nullable: true, blank: true, comment: '颜色'
        parent nullable: true, blank: true, comment: '父维度'
    }

    static mapping = {
        dictoryType enumType: 'string'
        sort orderNumber: 'asc'
        cache true
    }

    static initData()
    {
        if (!CustomDimension.findByCode('cltv'))
        {
            def cltvCD, cltvCCD
            cltvCD = new CustomDimension()
            cltvCD.label = 'CLTV'
            cltvCD.code = 'cltv'
            cltvCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCD.orderNumber = 1
            cltvCD.save()

            cltvCCD = new CustomDimension()
            cltvCCD.label = '0~60%'
            cltvCCD.minValue = 0
            cltvCCD.minOperator = ">"
            cltvCCD.maxValue = 0.6
            cltvCCD.maxOperator = "<="
            cltvCCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCCD.orderNumber = 1
            cltvCCD.define = '低风险'
            cltvCCD.parent = cltvCD
            cltvCCD.save()

            cltvCCD = new CustomDimension()
            cltvCCD.label = '60%~80%'
            cltvCCD.minValue = 0.6
            cltvCCD.minOperator = ">"
            cltvCCD.maxValue = 0.8
            cltvCCD.maxOperator = "<="
            cltvCCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCCD.orderNumber = 2
            cltvCCD.define = '中风险'
            cltvCCD.parent = cltvCD
            cltvCCD.save()


            cltvCCD = new CustomDimension()
            cltvCCD.label = '80%~100%'
            cltvCCD.minValue = 0.8
            cltvCCD.minOperator = ">"
            cltvCCD.maxValue = 1
            cltvCCD.maxOperator = "<="
            cltvCCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCCD.orderNumber = 3
            cltvCCD.define = '高风险'
            cltvCCD.parent = cltvCD
            cltvCCD.save()

            cltvCCD = new CustomDimension()
            cltvCCD.label = '100%'
            cltvCCD.minValue = 1
            cltvCCD.minOperator = ">"
            cltvCCD.maxValue = 2
            cltvCCD.maxOperator = "<="
            cltvCCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCCD.orderNumber = 4
            cltvCCD.define = '亏损'
            cltvCCD.parent = cltvCD
            cltvCCD.save()
        }

        if (!CustomDimension.findByCode('loansBalance'))
        {
            def cltvCD, cltvCCD
            cltvCD = new CustomDimension()
            cltvCD.label = '贷款余额'
            cltvCD.code = 'loansBalance'
            cltvCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCD.orderNumber = 2
            cltvCD.save()

            cltvCCD = new CustomDimension()
            cltvCCD.label = '50万以下'
            cltvCCD.minValue = 0
            cltvCCD.minOperator = ">"
            cltvCCD.maxValue = 500000
            cltvCCD.maxOperator = "<="
            cltvCCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCCD.orderNumber = 1
            cltvCCD.define = '低风险'
            cltvCCD.parent = cltvCD
            cltvCCD.save()

            cltvCCD = new CustomDimension()
            cltvCCD.label = '50-100万'
            cltvCCD.minValue = 500000
            cltvCCD.minOperator = ">"
            cltvCCD.maxValue = 1000000
            cltvCCD.maxOperator = "<="
            cltvCCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCCD.orderNumber = 2
            cltvCCD.define = '中风险'
            cltvCCD.parent = cltvCD
            cltvCCD.save()


            cltvCCD = new CustomDimension()
            cltvCCD.label = '100-300万'
            cltvCCD.minValue = 1000000
            cltvCCD.minOperator = ">"
            cltvCCD.maxValue = 3000000
            cltvCCD.maxOperator = "<="
            cltvCCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCCD.orderNumber = 3
            cltvCCD.define = '高风险'
            cltvCCD.parent = cltvCD
            cltvCCD.save()

            cltvCCD = new CustomDimension()
            cltvCCD.label = '300万以上'
            cltvCCD.minValue = 3000000
            cltvCCD.minOperator = ">"
            cltvCCD.maxValue = 1000000000
            cltvCCD.maxOperator = "<="
            cltvCCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCCD.orderNumber = 4
            cltvCCD.define = '亏损'
            cltvCCD.parent = cltvCD
            cltvCCD.save()
        }

        if (!CustomDimension.findByCode('loansAmount'))
        {
            def cltvCD, cltvCCD
            cltvCD = new CustomDimension()
            cltvCD.label = '贷款金额'
            cltvCD.code = 'loansAmount'
            cltvCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCD.orderNumber = 3
            cltvCD.save()

            cltvCCD = new CustomDimension()
            cltvCCD.label = '50万以下'
            cltvCCD.minValue = 0
            cltvCCD.minOperator = ">"
            cltvCCD.maxValue = 500000
            cltvCCD.maxOperator = "<="
            cltvCCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCCD.orderNumber = 1
            cltvCCD.define = '低风险'
            cltvCCD.parent = cltvCD
            cltvCCD.save()

            cltvCCD = new CustomDimension()
            cltvCCD.label = '50-100万'
            cltvCCD.minValue = 500000
            cltvCCD.minOperator = ">"
            cltvCCD.maxValue = 1000000
            cltvCCD.maxOperator = "<="
            cltvCCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCCD.orderNumber = 2
            cltvCCD.define = '中风险'
            cltvCCD.parent = cltvCD
            cltvCCD.save()


            cltvCCD = new CustomDimension()
            cltvCCD.label = '100-300万'
            cltvCCD.minValue = 1000000
            cltvCCD.minOperator = ">"
            cltvCCD.maxValue = 3000000
            cltvCCD.maxOperator = "<="
            cltvCCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCCD.orderNumber = 3
            cltvCCD.define = '高风险'
            cltvCCD.parent = cltvCD
            cltvCCD.save()

            cltvCCD = new CustomDimension()
            cltvCCD.label = '300万以上'
            cltvCCD.minValue = 3000000
            cltvCCD.minOperator = ">"
            cltvCCD.maxValue = 1000000000
            cltvCCD.maxOperator = "<="
            cltvCCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCCD.orderNumber = 4
            cltvCCD.define = '亏损'
            cltvCCD.parent = cltvCD
            cltvCCD.save()
        }

        if (!CustomDimension.findByCode('loansDuration'))
        {
            def cltvCD, cltvCCD
            cltvCD = new CustomDimension()
            cltvCD.label = '贷款年限'
            cltvCD.code = 'loansDuration'
            cltvCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCD.orderNumber = 4
            cltvCD.save()

            cltvCCD = new CustomDimension()
            cltvCCD.label = '10年以下'
            cltvCCD.minValue = 0
            cltvCCD.minOperator = ">"
            cltvCCD.maxValue = 120
            cltvCCD.maxOperator = "<="
            cltvCCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCCD.orderNumber = 1
            cltvCCD.define = '低风险'
            cltvCCD.parent = cltvCD
            cltvCCD.save()

            cltvCCD = new CustomDimension()
            cltvCCD.label = '10年-20年'
            cltvCCD.minValue = 120
            cltvCCD.minOperator = ">"
            cltvCCD.maxValue = 240
            cltvCCD.maxOperator = "<="
            cltvCCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCCD.orderNumber = 2
            cltvCCD.define = '中风险'
            cltvCCD.parent = cltvCD
            cltvCCD.save()


            cltvCCD = new CustomDimension()
            cltvCCD.label = '20年-30年'
            cltvCCD.minValue = 240
            cltvCCD.minOperator = ">"
            cltvCCD.maxValue = 360
            cltvCCD.maxOperator = "<="
            cltvCCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCCD.orderNumber = 3
            cltvCCD.define = '高风险'
            cltvCCD.parent = cltvCD
            cltvCCD.save()

            cltvCCD = new CustomDimension()
            cltvCCD.label = '30年以上'
            cltvCCD.minValue = 360
            cltvCCD.minOperator = ">"
            cltvCCD.maxValue = 10000
            cltvCCD.maxOperator = "<="
            cltvCCD.dictoryType = DictoryTypeDict.EstateRisk
            cltvCCD.orderNumber = 4
            cltvCCD.define = '亏损'
            cltvCCD.parent = cltvCD
            cltvCCD.save()
        }
    }
}
